<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>

            // 暂时性死区
            // console.log( name ); // ReferenceError: Cannot access 'name' before initialization

            let name = "岑参" ;
            console.log( name );
            console.log( window.name );
            console.log( globalThis.name );

            // 暂时性死区
            // console.log( age ); // ReferenceError: Cannot access 'age' before initialization

            const age = 18 ;
            console.log( age );
            console.log( window.age );
            console.log( globalThis.age );

            // console.log( gender ); // ReferenceError: gender is not defined

            function test(){
                console.log( first );
                // 在函数内使用 var 声明的变量其作用域就是函数本身
                var first = '第一' ;
                // 使用 let 和 const 声明的变量，其作用域是从声明的地方开始到它所在代码块结束
                let second = '第二' ;
                // 在浏览器端 变量之前没有指定 var、let、const，则函数执行后会绑定到 window 对象上
                third = "第三" ;
            }

            test();
            console.log( third , window.third , globalThis.third );

        </script>
    </head>
    <body>

    </body>
</html>